package cn.com.anypay.manager.payment.config;

import java.util.Map;

/**
 * 渠道配置接口
 *
 * 定义支付渠道配置的标准结构
 *
 * @author AnyPay Team
 * @version 1.0
 * @since 2025-07-05
 */
public interface ChannelConfig {

    /**
     * 获取渠道ID
     *
     * @return 渠道唯一标识
     */
    String getChannelId();

    /**
     * 获取渠道名称
     *
     * @return 渠道显示名称
     */
    String getChannelName();

    /**
     * 是否启用
     *
     * @return true 启用，false 禁用
     */
    boolean isEnabled();

    /**
     * 获取配置参数
     *
     * @return 配置参数Map
     */
    Map<String, Object> getConfigParams();

    /**
     * 获取指定参数值
     *
     * @param key 参数键
     * @return 参数值
     */
    Object getConfigParam(String key);

    /**
     * 获取指定参数值（字符串类型）
     *
     * @param key 参数键
     * @return 参数值
     */
    String getConfigParamAsString(String key);

    /**
     * 获取指定参数值（整数类型）
     *
     * @param key 参数键
     * @return 参数值
     */
    Integer getConfigParamAsInteger(String key);

    /**
     * 获取指定参数值（布尔类型）
     *
     * @param key 参数键
     * @return 参数值
     */
    Boolean getConfigParamAsBoolean(String key);

    /**
     * 验证配置是否有效
     *
     * @return true 有效，false 无效
     */
    boolean isValid();

    /**
     * 获取配置验证错误信息
     *
     * @return 错误信息列表
     */
    String[] getValidationErrors();

    /**
     * 获取配置的环境（dev, test, prod）
     *
     * @return 环境标识
     */
    String getEnvironment();
}